昨天學習了 Gemini Prompt Engineering,開始嘗試透過 Prompt 告訴 Gemini 要分析哪些內容,以及希望它用什麼格式回答。
一開始看到 JSON 的時候,覺得它看起來有點像程式碼,但實際了解後發現,它其實是一種用來整理和傳遞資料的格式,而且在 AI 和網站開發中都很常見。
JSON 的全名是 JavaScript Object Notation,是一種輕量、容易閱讀的資料交換格式。
雖然名稱裡面有 JavaScript,但 JSON 並不只能使用在 JavaScript,也可以被許多不同的程式語言使用。
JSON 的特色是可以把資料整理成有規則的結構,讓人可以閱讀,也方便程式讀取。
例如一般文字可能會寫:
「這家拉麵很好吃,服務態度不錯,但是等待時間很久,價格有點高。」
如果使用 JSON,就可以把這些資訊拆成不同的欄位:
{
"food": "很好吃",
"service": "態度不錯",
"waiting_time": "很久",
"price": "偏高"
}
這樣就可以很清楚知道每一個資訊代表什麼。
JSON 主要是由「鍵」和「值」組成。
例如:
{
"food": "很好吃"
}
這裡的:
food 是鍵(Key)
很好吃 是值(Value)
也就是:
{
"name": "拉麵店",
"rating": 4.5,
"recommended": true
}
這裡的 name 是文字,rating 是數字,recommended 是布林值,而 risk_points 則是一個陣列,可以放入多個雷點。
除了文字之外,JSON 也可以存放不同類型的資料,例如:
用雙引號表示,例如:"name": "拉麵店"
可以是整數或小數,例如:"rating": 4.5
只有 true 和 false 兩種,例如:"recommended": true
可以用來表示「是/否」、「有/沒有」等資訊。
使用 [] 表示,可以放入多筆資料。
例如一家店有多個可能的雷點:
"risk_points": [
"等待時間過長",
"價格偏高"
]
使用 {} 表示,可以再放入其他 Key 和 Value。
例如把餐點和服務分開:
"food_service": {
"food": "餐點好吃",
"service": "服務態度不錯"
}
如果目前沒有資料,可以使用 null 表示:"environment": null
因為我的目標不只是讓 Gemini 幫忙分析評論,而是希望最後把分析結果放進自己製作的網站。
如果 Gemini 每次都用一般文字回答,內容可能會有不同的格式,網站程式就比較難判斷每一段文字代表什麼。
例如:
這家店整體評價不錯,但等待時間較長,
餐點很好吃,價格稍微偏高。
人可以看懂,但程式不容易直接知道哪一段是「整體評價」、哪一段是「雷點」、哪一段是「價格」。
因此,可以要求 Gemini 使用固定的 JSON 格式輸出:
{
"overall": "正面",
"risk_points": [
"等待時間過長",
"價格偏高"
],
"food_service": {
"food": "餐點好吃",
"service": "店員態度較冷淡"
},
"environment": "未提及",
"price": "偏高",
"suspicious_review": false
}
這樣每一項資訊都有固定的欄位。
例如:
overall → 整體評價
risk_points → 可能的雷點
food_service → 餐點/服務
environment → 環境
price → 價格
suspicious_review → 疑似異常評論
之後網站就可以根據這些欄位取得資料,再把它們顯示在不同的位置。
所以對我的專案來說,JSON 可以當作 Gemini 和網站之間傳遞分析結果的一種資料格式。
了解基本概念後,我也在 Google AI Studio 中實際測試,要求 Gemini 將店家評論分析結果改成 JSON 格式。
這次的目標是讓 Gemini 不再只是回答一段文字,而是按照我指定的欄位輸出資料。
透過這次練習,我也開始了解 AI 產生的內容,除了可以直接給人閱讀之外,也可以轉換成程式能夠處理的資料。
今天主要學習了 JSON 的基本概念、Key 和 Value、常見資料型態,以及 JSON 在 AI 與網站開發中的用途。
也第一次實際讓 Gemini 輸出 JSON,開始了解如何把 AI 的分析結果轉換成比較有規則的資料。
目前對 JSON 還只是初步認識,接下來還需要繼續練習如何設計適合自己專案的 JSON 結構,以及之後要怎麼讓網站讀取這些資料。
對「AI 避雷探針」來說,未來預計會形成:
店家評論 → Gemini 分析 → JSON → 網站顯示
所以今天學習 JSON,也算是為之後的網站開發先打好基礎。